// 1. 获取数据库引用 -- 环境变量
const app = getApp()
const dbName = 'user'
let db = null
if(app.data.db == null) {
  db = wx.cloud.database({env: app.data.envId})
  app.data.db = db
} else {
  db = app.data.db
}

//调用 add 方法往集合中插入一条记录
function add(data) {
  console.log('add: ' + JSON.stringify(data))
  return db.collection(dbName).add({data})
}
// doc 获取一个id记录的数据
function doc(id) {
  console.log('doc: ' + id)
 return db.collection(dbName).doc(id).get()
}
// get 方法会触发网络请求，往数据库取数据
function get() {
  console.log('get: ' + dbName)
 return db.collection(dbName).get()
}
// skipGet (createData:排序， page：页码)
function skipGet(page) {
  console.log('skipGet: ' + dbName + ' page: ' + page)
  return db.collection(dbName).orderBy('createData', 'desc').skip(20 * page).get()
}

// where 可以一次性获取多条记录 res.data
async function where(parameter) {
  console.log('where: ' + JSON.stringify(parameter))
  return await db.collection(dbName).where(parameter).get()
 }

 // count
function count() {
  console.log('count: ' + dbName)
  return db.collection(dbName).count()
 }
// whereCount
function whereCount(parameter) {
  console.log('whereCount: ' + dbName)
  return db.collection(dbName).where(parameter).count()
 }

  // update ,局部字段更新
function update(id, data) {
  console.log('update: ' + id + ' : ' + JSON.stringify(data))
  return db.collection(dbName).doc(id).update({data})
 }

 // set , 全量替换
function set(id, data) {
  console.log('set: ' + id + ' : ' + data)
  return db.collection(dbName).doc(id).set({data})
 }

 // remove
function remove(id) {
  console.log('remove: ' + id)
  return db.collection(dbName).doc(id).remove()
 }

module.exports = {
  doc,
  get,
  skipGet,
  add,
  where,
  count,
  whereCount,
  update,
  set,
  remove
}